using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._NetworkAnalystTools._Analysis
{
    /// <summary>
    /// <para>Make Route Analysis Layer</para>
    /// <para>Makes a route network analysis layer and sets its analysis properties. A route analysis layer is useful for determining the best route between a set of network locations based on a specified network cost. The layer can be created using a local network dataset or a routing service hosted online or in a portal.</para>
    /// <para>创建路径网络分析图层并设置其分析属性。路由分析图层可用于根据指定的网络开销确定一组网络位置之间的最佳路由。可以使用本地网络数据集或在线或门户中托管的路径服务创建图层。</para>
    /// </summary>    
    [DisplayName("Make Route Analysis Layer")]
    public class MakeRouteAnalysisLayer : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public MakeRouteAnalysisLayer()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_network_data_source">
        /// <para>Network Data Source</para>
        /// <para>The network dataset or service on which the network analysis will be performed. Use the portal URL for a service.</para>
        /// <para>将对其执行网络分析的网络数据集或服务。使用服务的门户 URL。</para>
        /// </param>
        public MakeRouteAnalysisLayer(object _network_data_source)
        {
            this._network_data_source = _network_data_source;
        }
        public override string ToolboxName => "Network Analyst Tools";

        public override string ToolName => "Make Route Analysis Layer";

        public override string CallName => "na.MakeRouteAnalysisLayer";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_network_data_source, _layer_name, _travel_mode, _sequence.GetGPValue(), _time_of_day, _time_zone.GetGPValue(), _line_shape.GetGPValue(), _accumulate_attributes, _generate_directions_on_solve.GetGPValue(), _out_network_analysis_layer, _time_zone_for_time_fields.GetGPValue()];

        /// <summary>
        /// <para>Network Data Source</para>
        /// <para>The network dataset or service on which the network analysis will be performed. Use the portal URL for a service.</para>
        /// <para>将对其执行网络分析的网络数据集或服务。使用服务的门户 URL。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Network Data Source")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _network_data_source { get; set; }


        /// <summary>
        /// <para>Layer Name</para>
        /// <para>The name of the network analysis layer to create.</para>
        /// <para>要创建的网络分析图层的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Layer Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _layer_name { get; set; } = null;


        /// <summary>
        /// <para>Travel Mode</para>
        /// <para><xdoc>
        ///   <para>The name of the travel mode to use in the analysis. The travel mode represents a collection of network settings, such as travel restrictions and U-turn policies, that determine how a pedestrian, car, truck, or other medium of transportation moves through the network. Travel modes are defined on your network data source.</para>
        ///   <para>An arcpy.na.TravelMode object and a string containing the valid JSON representation of a travel mode can also be used as input to the parameter.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要在分析中使用的出行模式的名称。出行模式表示一组网络设置，例如出行限制和 U 形转弯策略，这些设置决定了行人、汽车、卡车或其他交通工具在网络中的移动方式。出行模式是在网络数据源上定义的。</para>
        ///   <para>还可以将 arcpy.na.TravelMode 对象和包含出行模式的有效 JSON 表示形式的字符串用作参数的输入。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Travel Mode")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _travel_mode { get; set; } = null;


        /// <summary>
        /// <para>Sequence</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the input stops must be visited in a particular order when calculating the optimal route. This option changes the route analysis from a shortest-path problem to a traveling salesperson problem (TSP).</para>
        ///   <bulletList>
        ///     <bullet_item>Use current order—The stops will be visited in the input order. This is the default.</bullet_item><para/>
        ///     <bullet_item>Find best order—The stops will be reordered to find the optimal route. This option changes the route analysis from a shortest-path problem to a traveling salesperson problem (TSP).</bullet_item><para/>
        ///     <bullet_item>Preserve both first and last stop—Preserve the first and last stops by input order. The rest will be reordered to find the optimal route.</bullet_item><para/>
        ///     <bullet_item>Preserve first stop—Preserve the first stop by input order. The rest will be reordered to find the optimal route.</bullet_item><para/>
        ///     <bullet_item>Preserve last stop—Preserve the last stop by input order. The rest will be reordered to find the optimal route.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定在计算最佳路径时是否必须按特定顺序访问输入停靠点。此选项将路径分析从最短路径问题更改为旅行销售人员问题 （TSP）。</para>
        ///   <bulletList>
        ///     <bullet_item>使用当前顺序—将按输入顺序访问停靠点。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>查找最佳顺序—将对停靠点进行重新排序以找到最佳路径。此选项将路径分析从最短路径问题更改为旅行销售人员问题 （TSP）。</bullet_item><para/>
        ///     <bullet_item>保留第一和最后一停靠点 - 按输入顺序保留第一停靠点和最后一停靠点。其余的将被重新排序以找到最佳路线。</bullet_item><para/>
        ///     <bullet_item>保留第一个停靠点 - 按输入顺序保留第一个停靠点。其余的将被重新排序以找到最佳路线。</bullet_item><para/>
        ///     <bullet_item>保留上一站 （Preserve last stop） - 按输入顺序保留上一站。其余的将被重新排序以找到最佳路线。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Sequence")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _sequence_value _sequence { get; set; } = _sequence_value._USE_CURRENT_ORDER;

        public enum _sequence_value
        {
            /// <summary>
            /// <para>Use current order</para>
            /// <para>Use current order—The stops will be visited in the input order. This is the default.</para>
            /// <para>使用当前顺序—将按输入顺序访问停靠点。这是默认设置。</para>
            /// </summary>
            [Description("Use current order")]
            [GPEnumValue("USE_CURRENT_ORDER")]
            _USE_CURRENT_ORDER,

            /// <summary>
            /// <para>Find best order</para>
            /// <para>Find best order—The stops will be reordered to find the optimal route. This option changes the route analysis from a shortest-path problem to a traveling salesperson problem (TSP).</para>
            /// <para>查找最佳顺序—将对停靠点进行重新排序以找到最佳路径。此选项将路径分析从最短路径问题更改为旅行销售人员问题 （TSP）。</para>
            /// </summary>
            [Description("Find best order")]
            [GPEnumValue("FIND_BEST_ORDER")]
            _FIND_BEST_ORDER,

            /// <summary>
            /// <para>Preserve both first and last stop</para>
            /// <para>Preserve both first and last stop—Preserve the first and last stops by input order. The rest will be reordered to find the optimal route.</para>
            /// <para>保留第一和最后一停靠点 - 按输入顺序保留第一停靠点和最后一停靠点。其余的将被重新排序以找到最佳路线。</para>
            /// </summary>
            [Description("Preserve both first and last stop")]
            [GPEnumValue("PRESERVE_BOTH")]
            _PRESERVE_BOTH,

            /// <summary>
            /// <para>Preserve first stop</para>
            /// <para>Preserve first stop—Preserve the first stop by input order. The rest will be reordered to find the optimal route.</para>
            /// <para>保留第一个停靠点 - 按输入顺序保留第一个停靠点。其余的将被重新排序以找到最佳路线。</para>
            /// </summary>
            [Description("Preserve first stop")]
            [GPEnumValue("PRESERVE_FIRST")]
            _PRESERVE_FIRST,

            /// <summary>
            /// <para>Preserve last stop</para>
            /// <para>Preserve last stop—Preserve the last stop by input order. The rest will be reordered to find the optimal route.</para>
            /// <para>保留上一站 （Preserve last stop） - 按输入顺序保留上一站。其余的将被重新排序以找到最佳路线。</para>
            /// </summary>
            [Description("Preserve last stop")]
            [GPEnumValue("PRESERVE_LAST")]
            _PRESERVE_LAST,

        }

        /// <summary>
        /// <para>Time of Day</para>
        /// <para><xdoc>
        ///   <para>The start date and time for the route. Route start time is typically used to find routes based on the impedance attribute that varies with the time of the day. For example, a start time of 7:00 a.m. could be used to find a route that considers rush hour traffic. The default value for this parameter is 8:00 a.m. A date and time can be specified as 10/21/05 10:30 AM. If the route spans multiple days and only the start time is specified, the current date is used.</para>
        ///   <para>Instead of using a particular date, a day of the week can be specified using the following dates:
        ///   <bulletList>
        ///     <bullet_item>Today—12/30/1899  </bullet_item><para/>
        ///     <bullet_item>Sunday—12/31/1899  </bullet_item><para/>
        ///     <bullet_item>Monday—1/1/1900  </bullet_item><para/>
        ///     <bullet_item>Tuesday—1/2/1900  </bullet_item><para/>
        ///     <bullet_item>Wednesday—1/3/1900  </bullet_item><para/>
        ///     <bullet_item>Thursday—1/4/1900  </bullet_item><para/>
        ///     <bullet_item>Friday—1/5/1900  </bullet_item><para/>
        ///     <bullet_item>Saturday—1/6/1900  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>For example, to specify that travel should begin at 5:00 p.m. on Tuesday, specify the parameter value as 1/2/1900 5:00 PM.</para>
        ///   <para>After the solve, the start and end times of the route are populated in the output routes. These start and end times are also used when directions are generated.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>路线的开始日期和时间。路由开始时间通常用于根据随一天中的时间变化的阻抗属性来查找路由。例如，上午 7：00 的开始时间可用于查找考虑高峰时段交通的路径。此参数的默认值为上午 8：00。日期和时间可以指定为 10/21/05 上午 10：30。如果路径跨越多天且仅指定了开始时间，则使用当前日期。</para>
        /// 可以使用<para>以下日期指定星期几，而不是使用特定日期：
        ///   <bulletList>
        ///     <bullet_item>今天 - 1899 年 12 月 30 日</bullet_item><para/>
        ///     <bullet_item>星期日—1899年12月31日</bullet_item><para/>
        ///     <bullet_item>星期一 - 1/1/1900</bullet_item><para/>
        ///     <bullet_item>星期二 - 1/2/1900</bullet_item><para/>
        ///     <bullet_item>星期三 - 1/3/1900</bullet_item><para/>
        ///     <bullet_item>星期四—1/4/1900</bullet_item><para/>
        ///     <bullet_item>星期五 - 1/5/1900</bullet_item><para/>
        ///     <bullet_item>星期六 - 1/6/1900</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>例如，若要指定旅行应从星期二下午 5：00 开始，请将参数值指定为 1/2/1900 下午 5：00。</para>
        ///   <para>求解后，路由的开始和结束时间将填充到输出路由中。生成方向时也会使用这些开始和结束时间。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time of Day")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _time_of_day { get; set; } = null;


        /// <summary>
        /// <para>Time Zone</para>
        /// <para><xdoc>
        ///   <para>Specifies the time zone of the Time of Day parameter.</para>
        ///   <bulletList>
        ///     <bullet_item>Local time at locations—The Time of Day parameter refers to the time zone in which the first stop of a route is located. This is the default.If you are generating many routes that start in multiple times zones, the start times are staggered in coordinated universal time (UTC). For example, a Time of Day value of 10:00 a.m., 2 January, would mean a start time of 10:00 a.m. eastern standard time (3:00 p.m. UTC) for routes beginning in the eastern time zone and 10:00 a.m. central standard time (4:00 p.m. UTC) for routes beginning in the central time zone. The start times are offset by one hour in UTC.The arrival and departure times and dates recorded in the output Stops feature class will refer to the local time zone of the first stop for each route.</bullet_item><para/>
        ///     <bullet_item>UTC—The Time of Day parameter refers to coordinated universal time (UTC). Choose this option if you want to generate a route for a specific time, such as now, but aren't certain in which time zone the first stop will be located.If you are generating many routes spanning multiple times zones, the start times in UTC are simultaneous. For example, a Time of Day value of 10:00 a.m., 2 January, would mean a start time of 5:00 a.m. eastern standard time (10:00 a.m. UTC) for routes beginning in the eastern time zone and 4:00 a.m. central standard time (10:00 a.m. UTC) for routes beginning in the central time zone. Both routes would start at 10:00 a.m. UTC.The arrival and departure times and dates recorded in the output Stops feature class will refer to UTC.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定 Time of Day 参数的时区。</para>
        ///   <bulletList>
        ///     <bullet_item>位置的本地时间 - 时间参数是指路径第一站所在的时区。这是默认设置。如果要生成许多在多个时区开始的路径，则开始时间将以协调世界时 （UTC） 交错排列。例如，如果“时间”值为 1 月 2 日上午 10：00，则表示从东部时区开始的航线的开始时间为东部标准时间上午 10：00（UTC 时间下午 3：00），中部标准时间上午 10：00（UTC 时间下午 4：00）的开始时间（从中部时区开始的航线）的开始时间。开始时间以 UTC 为单位偏移一小时。输出停靠点要素类中记录的到达和出发时间及日期将参考每条路径的第一个停靠点的当地时区。</bullet_item><para/>
        ///     <bullet_item>UTC - 时间参数是指协调世界时 （UTC）。如果要生成特定时间（例如现在）的路线，但不确定第一个停靠点位于哪个时区，请选择此选项。如果要生成跨越多个时区的多个路由，则 UTC 中的开始时间是同时的。例如，如果“时间”值为 1 月 2 日上午 10：00，则表示从东部时区开始的航线的开始时间为东部标准时间凌晨 5：00（UTC 上午 10：00），对于从中部时区开始的航线，开始时间为中部标准时间凌晨 4：00（UTC 时间上午 10：00）。两条路线都将在UTC时间上午10：00开始。输出停靠点要素类中记录的到达和出发时间及日期将参考 UTC。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Zone")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_zone_value _time_zone { get; set; } = _time_zone_value._LOCAL_TIME_AT_LOCATIONS;

        public enum _time_zone_value
        {
            /// <summary>
            /// <para>UTC</para>
            /// <para>UTC—The Time of Day parameter refers to coordinated universal time (UTC). Choose this option if you want to generate a route for a specific time, such as now, but aren't certain in which time zone the first stop will be located.If you are generating many routes spanning multiple times zones, the start times in UTC are simultaneous. For example, a Time of Day value of 10:00 a.m., 2 January, would mean a start time of 5:00 a.m. eastern standard time (10:00 a.m. UTC) for routes beginning in the eastern time zone and 4:00 a.m. central standard time (10:00 a.m. UTC) for routes beginning in the central time zone. Both routes would start at 10:00 a.m. UTC.The arrival and departure times and dates recorded in the output Stops feature class will refer to UTC.</para>
            /// <para>UTC - 时间参数是指协调世界时 （UTC）。如果要生成特定时间（例如现在）的路线，但不确定第一个停靠点位于哪个时区，请选择此选项。如果要生成跨越多个时区的多个路由，则 UTC 中的开始时间是同时的。例如，如果“时间”值为 1 月 2 日上午 10：00，则表示从东部时区开始的航线的开始时间为东部标准时间凌晨 5：00（UTC 上午 10：00），对于从中部时区开始的航线，开始时间为中部标准时间凌晨 4：00（UTC 时间上午 10：00）。两条路线都将在UTC时间上午10：00开始。输出停靠点要素类中记录的到达和出发时间及日期将参考 UTC。</para>
            /// </summary>
            [Description("UTC")]
            [GPEnumValue("UTC")]
            _UTC,

            /// <summary>
            /// <para>Local time at locations</para>
            /// <para>Local time at locations—The Time of Day parameter refers to the time zone in which the first stop of a route is located. This is the default.If you are generating many routes that start in multiple times zones, the start times are staggered in coordinated universal time (UTC). For example, a Time of Day value of 10:00 a.m., 2 January, would mean a start time of 10:00 a.m. eastern standard time (3:00 p.m. UTC) for routes beginning in the eastern time zone and 10:00 a.m. central standard time (4:00 p.m. UTC) for routes beginning in the central time zone. The start times are offset by one hour in UTC.The arrival and departure times and dates recorded in the output Stops feature class will refer to the local time zone of the first stop for each route.</para>
            /// <para>位置的本地时间 - 时间参数是指路径第一站所在的时区。这是默认设置。如果要生成许多在多个时区开始的路径，则开始时间将以协调世界时 （UTC） 交错排列。例如，如果“时间”值为 1 月 2 日上午 10：00，则表示从东部时区开始的航线的开始时间为东部标准时间上午 10：00（UTC 时间下午 3：00），中部标准时间上午 10：00（UTC 时间下午 4：00）的开始时间（从中部时区开始的航线）的开始时间。开始时间以 UTC 为单位偏移一小时。输出停靠点要素类中记录的到达和出发时间及日期将参考每条路径的第一个停靠点的当地时区。</para>
            /// </summary>
            [Description("Local time at locations")]
            [GPEnumValue("LOCAL_TIME_AT_LOCATIONS")]
            _LOCAL_TIME_AT_LOCATIONS,

        }

        /// <summary>
        /// <para>Line Shape</para>
        /// <para><xdoc>
        ///   <para>Specifies the shape type for the route features that are output by the analysis.</para>
        ///   <bulletList>
        ///     <bullet_item>Along network—The output routes will have the exact shape of the underlying network sources. The output includes route measurements for linear referencing. The measurements increase from the first stop and record the cumulative impedance to reach a given position.</bullet_item><para/>
        ///     <bullet_item>No lines—No shape will be generated for the output routes.</bullet_item><para/>
        ///     <bullet_item>Straight lines—The output route shape will be a single straight line between the stops.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>No matter which output shape type is chosen, the best route is always determined by the network impedance, never Euclidean distance. This means that only the route shapes are different, not the underlying traversal of the network.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定分析输出的路径要素的形状类型。</para>
        ///   <bulletList>
        ///     <bullet_item>沿网络 - 输出路由将具有基础网络源的确切形状。输出包括用于线性参考的路径测量值。测量值从第一站开始增加，并记录累积阻抗以达到给定位置。</bullet_item><para/>
        ///     <bullet_item>无线 - 不会为输出路径生成任何形状。</bullet_item><para/>
        ///     <bullet_item>直线—输出路径形状将为停靠点之间的一条直线。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>无论选择哪种输出形状类型，最佳路由始终由网络阻抗决定，而不是欧几里得距离。这意味着只有路由形状不同，而网络的基础遍历不同。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Line Shape")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _line_shape_value _line_shape { get; set; } = _line_shape_value._ALONG_NETWORK;

        public enum _line_shape_value
        {
            /// <summary>
            /// <para>No lines</para>
            /// <para>No lines—No shape will be generated for the output routes.</para>
            /// <para>无线 - 不会为输出路径生成任何形状。</para>
            /// </summary>
            [Description("No lines")]
            [GPEnumValue("NO_LINES")]
            _NO_LINES,

            /// <summary>
            /// <para>Straight lines</para>
            /// <para>Straight lines—The output route shape will be a single straight line between the stops.</para>
            /// <para>直线—输出路径形状将为停靠点之间的一条直线。</para>
            /// </summary>
            [Description("Straight lines")]
            [GPEnumValue("STRAIGHT_LINES")]
            _STRAIGHT_LINES,

            /// <summary>
            /// <para>Along network</para>
            /// <para>Along network—The output routes will have the exact shape of the underlying network sources. The output includes route measurements for linear referencing. The measurements increase from the first stop and record the cumulative impedance to reach a given position.</para>
            /// <para>沿网络 - 输出路由将具有基础网络源的确切形状。输出包括用于线性参考的路径测量值。测量值从第一站开始增加，并记录累积阻抗以达到给定位置。</para>
            /// </summary>
            [Description("Along network")]
            [GPEnumValue("ALONG_NETWORK")]
            _ALONG_NETWORK,

        }

        /// <summary>
        /// <para>Accumulate Attributes</para>
        /// <para><xdoc>
        ///   <para>A list of cost attributes to be accumulated during analysis. These accumulated attributes are for reference only; the solver only uses the cost attribute used by your designated travel mode when solving the analysis.</para>
        ///   <para>For each cost attribute that is accumulated, a Total_[Impedance] property is populated in the network analysis output features.</para>
        ///   <para>This parameter is not available if the network data source is an ArcGIS Online service or the network data source is a service on a version of Portal for ArcGIS that does not support accumulation.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在分析期间要累积的成本属性列表。这些累积属性仅供参考;求解器在求解分析时仅使用指定出行模式使用的成本属性。</para>
        ///   <para>对于累积的每个成本属性，将在网络分析输出要素中填充一个 Total_[Impedance] 属性。</para>
        ///   <para>如果网络数据源是 ArcGIS Online 服务，或者网络数据源是不支持累积的 Portal for ArcGIS 版本上的服务，则此参数不可用。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Accumulate Attributes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _accumulate_attributes { get; set; } = null;


        /// <summary>
        /// <para>Generate Directions on Solve</para>
        /// <para><xdoc>
        ///   <para>Specifies whether directions will be generated when running the analysis.
        ///   <bulletList>
        ///     <bullet_item>Checked—Turn-by-turn directions will be generated on solve. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Turn-by-turn directions will not be generated on solve.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>For an analysis in which generating turn-by-turn directions is not needed, leaving this option unchecked will reduce the time it takes to solve the analysis.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在运行分析时是否生成方向。
        ///   <bulletList>
        ///     <bullet_item>选中 - 求解时将生成逐向转弯方向。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中—求解时不会生成逐向转弯方向。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>对于不需要生成逐向导航的分析，未选中此选项将减少求解分析所需的时间。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Generate Directions on Solve")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _generate_directions_on_solve_value _generate_directions_on_solve { get; set; } = _generate_directions_on_solve_value._true;

        public enum _generate_directions_on_solve_value
        {
            /// <summary>
            /// <para>DIRECTIONS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DIRECTIONS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_DIRECTIONS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_DIRECTIONS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Network Analyst Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Network Analyst Layer")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_network_analysis_layer { get; set; }


        /// <summary>
        /// <para>Time Zone for Time Fields</para>
        /// <para><xdoc>
        ///   <para>Specifies the time zone that will be used to interpret the time fields included in the input tables, such as the fields used for time windows.</para>
        ///   <bulletList>
        ///     <bullet_item>Local time at locations—The dates and times in the time fields for the stop will be interpreted according to the time zone in which the stop is located. This is the default.</bullet_item><para/>
        ///     <bullet_item>UTC—The dates and times in the time fields for the stop refer to coordinated universal time (UTC).</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定将用于解释输入表中包含的时间字段（如用于时间窗口的字段）的时区。</para>
        ///   <bulletList>
        ///     <bullet_item>位置的本地时间 - 停靠点时间字段中的日期和时间将根据停靠点所在的时区进行解释。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>UTC - 停靠点时间字段中的日期和时间是指协调世界时 （UTC）。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Zone for Time Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_zone_for_time_fields_value _time_zone_for_time_fields { get; set; } = _time_zone_for_time_fields_value._LOCAL_TIME_AT_LOCATIONS;

        public enum _time_zone_for_time_fields_value
        {
            /// <summary>
            /// <para>UTC</para>
            /// <para>UTC—The dates and times in the time fields for the stop refer to coordinated universal time (UTC).</para>
            /// <para>UTC - 停靠点时间字段中的日期和时间是指协调世界时 （UTC）。</para>
            /// </summary>
            [Description("UTC")]
            [GPEnumValue("UTC")]
            _UTC,

            /// <summary>
            /// <para>Local time at locations</para>
            /// <para>Local time at locations—The dates and times in the time fields for the stop will be interpreted according to the time zone in which the stop is located. This is the default.</para>
            /// <para>位置的本地时间 - 停靠点时间字段中的日期和时间将根据停靠点所在的时区进行解释。这是默认设置。</para>
            /// </summary>
            [Description("Local time at locations")]
            [GPEnumValue("LOCAL_TIME_AT_LOCATIONS")]
            _LOCAL_TIME_AT_LOCATIONS,

        }

        public MakeRouteAnalysisLayer SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}